home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-08-29 | 76.6 KB | 1,798 lines |
- %% @texfile{
- %% filename="amstex.tex",
- %% version="2.1",
- %% date="5-APR-1991",
- %% filetype="AMS-TeX: documentstyle",
- %% copyright="Copyright (C) American Mathematical Society,
- %% all rights reserved. Copying of this file is
- %% authorized only if either:
- %% (1) you make absolutely no changes to your copy
- %% including name; OR
- %% (2) if you do make changes, you first rename it to some
- %% other name.",
- %% author="American Mathematical Society",
- %% address="American Mathematical Society,
- %% Technical Support Group,
- %% P. O. Box 6248,
- %% Providence, RI 02940,
- %% USA",
- %% telephone="401-455-4080 or (in the USA) 800-321-4AMS",
- %% email="Internet: Tech-Support@Math.AMS.com",
- %% codetable="ISO/ASCII",
- %% checksumtype="line count",
- %% checksum="1797",
- %% keywords="amstex, ams-tex, tex",
- %% abstract="This file contains the AMS-TeX Version 2.1 macro
- %% package. It is intended to be used in conjunction with
- %% plain TeX. The macros defined herein are chiefly oriented
- %% to the construction of mathematical formulas, both display
- %% and nondisplay, using AMS conventions for fonts, spacing,
- %% and other details."
- %% }
- \def\fmtname{AmS-TeX}
- \let\plainfmtversion\fmtversion
- \def\fmtversion{2.1}
- \catcode`\@=11
- \ifx\amstexloaded@\relax\catcode`\@=\active
- \endinput\else\let\amstexloaded@\relax\fi
- \newlinechar=`\^^J
- \def\W@{\immediate\write\sixt@@n}
- \def\CR@{\W@{^^J\fmtname - Version \fmtversion^^J%
- COPYRIGHT 1985, 1990, 1991 - AMERICAN MATHEMATICAL SOCIETY^^J%
- Use of this macro package is not restricted provided^^J%
- each use is acknowledged upon publication.^^J}}
- \CR@ \everyjob{\CR@}
- \message{Loading definitions for}
- \message{misc utility macros,}
- \toksdef\toks@@=2
- \long\def\rightappend@#1\to#2{\toks@{\\{#1}}\toks@@
- =\expandafter{#2}\xdef#2{\the\toks@@\the\toks@}\toks@{}\toks@@{}}
- \def\alloclist@{}
- \newif\ifalloc@
- \def\showallocations{{\def\\{\immediate\write\m@ne}\alloclist@}\alloc@true}
- \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
- \ch@ck#1#4#2\allocationnumber=\count1#1
- \global#3#5=\allocationnumber
- \edef\next@{\string#5=\string#2\the\allocationnumber}%
- \expandafter\rightappend@\next@\to\alloclist@}
- \newcount\count@@
- \newcount\count@@@
- \def\FN@{\futurelet\next}
- \def\DN@{\def\next@}
- \def\DNii@{\def\nextii@}
- \def\RIfM@{\relax\ifmmode}
- \def\RIfMIfI@{\relax\ifmmode\ifinner}
- \def\setboxz@h{\setbox\z@\hbox}
- \def\wdz@{\wd\z@}
- \def\boxz@{\box\z@}
- \def\setbox@ne{\setbox\@ne}
- \def\wd@ne{\wd\@ne}
- \def\iterate{\body\expandafter\iterate\else\fi}
- \def\err@#1{\errmessage{AmS-TeX error: #1}}
- \newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J
- Maybe you should try asking a human?^^J
- An error might have occurred before I noticed any problems.^^J
- ``If all else fails, read the instructions.''}
- \def\Err@{\errhelp\defaulthelp@\err@}
- \def\eat@#1{}
- \def\in@#1#2{\def\in@@##1#1##2##3\in@@{\ifx\in@##2\in@false\else\in@true\fi}%
- \in@@#2#1\in@\in@@}
- \newif\ifin@
- \def\space@.{\futurelet\space@\relax}
- \space@. %
- \newhelp\athelp@
- {Only certain combinations beginning with @ make sense to me.^^J
- Perhaps you wanted \string\@\space for a printed @?^^J
- I've ignored the character or group after @.}
- {\catcode`\~=\active % just in case
- \lccode`\~=`\@ \lowercase{\gdef~{\FN@\at@}}}
- \def\at@{\let\next@\at@@
- \ifcat\noexpand\next a\else\ifcat\noexpand\next0\else
- \ifcat\noexpand\next\relax\else
- \let\next\at@@@\fi\fi\fi
- \next@}
- \def\at@@#1{\expandafter
- \ifx\csname\space @\string#1\endcsname\relax
- \expandafter\at@@@ \else
- \csname\space @\string#1\expandafter\endcsname\fi}
- \def\at@@@#1{\errhelp\athelp@ \err@{\Invalid@@ @}}%%
- \def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname}%%
- \newhelp\defahelp@{If you typed \string\define\space cs instead of
- \string\define\string\cs\space^^J
- I've substituted an inaccessible control sequence so that your^^J
- definition will be completed without mixing me up too badly.^^J
- If you typed \string\define{\string\cs} the inaccessible control sequence^^J
- was defined to be \string\cs, and the rest of your^^J
- definition appears as input.}
- \newhelp\defbhelp@{I've ignored your definition, because it might^^J
- conflict with other uses that are important to me.}
- \def\define{\FN@\define@}
- \def\define@{\ifcat\noexpand\next\relax
- \expandafter\define@@\else\errhelp\defahelp@ %1
- \err@{\string\define\space must be followed by a control
- sequence}\expandafter\def\expandafter\nextii@\fi} %2
- \def\undefined@@@@@@@@@@{}
- \def\preloaded@@@@@@@@@@{}
- \def\next@@@@@@@@@@{}
- \def\define@@#1{\ifx#1\relax\errhelp\defbhelp@ %1
- \err@{\string#1\space is already defined}\DN@{\DNii@}\else
- \expandafter\ifx\csname\expandafter\eat@\string %2
- #1@@@@@@@@@@\endcsname\undefined@@@@@@@@@@\errhelp\defbhelp@
- \err@{\string#1\space can't be defined}\DN@{\DNii@}\else
- \expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax %3
- \global\let#1\undefined\DN@{\def#1}\else\errhelp\defbhelp@
- \err@{\string#1\space is already defined}\DN@{\DNii@}\fi
- \fi\fi\next@}
- \let\redefine\def
- \def\predefine#1#2{\let#1#2}
- \def\undefine#1{\let#1\undefined}
- \message{page layout,}
- \newdimen\captionwidth@
- \captionwidth@\hsize
- \advance\captionwidth@-1.5in
- \def\pagewidth#1{\hsize#1\relax
- \captionwidth@\hsize\advance\captionwidth@-1.5in}
- \def\pageheight#1{\vsize#1\relax}
- \def\hcorrection#1{\advance\hoffset#1\relax}
- \def\vcorrection#1{\advance\voffset#1\relax}
- \message{accents/punctuation,}
- \def\tie{\unskip\nobreak\ }
- \let\graveaccent\`
- \let\acuteaccent\'
- \let\tildeaccent\~
- \let\hataccent\^
- \let\underscore\_
- \let\B\=
- \let\D\.
- \let\ic@\/
- \def\/{\unskip\ic@}
- \def\textfonti{\the\textfont\@ne}
- \def\t#1#2{{\edef\next@{\the\font}\textfonti\accent"7F \next@#1#2}}
- \def~{\unskip\nobreak\ \ignorespaces}
- \def\.{.\spacefactor\@m}
- \atdef@;{\leavevmode\null;}
- \atdef@:{\leavevmode\null:}
- \atdef@?{\leavevmode\null?}
- \edef\@{\string @}
- \def\relaxnext@{\let\next\relax}
- \atdef@-{\relaxnext@\leavevmode
- \DN@{\ifx\next-\DN@-{\FN@\nextii@}\else
- \DN@{\leavevmode\hbox{-}}\fi\next@}%
- \DNii@{\ifx\next-\DN@-{\leavevmode\hbox{---}}\else
- \DN@{\leavevmode\hbox{--}}\fi\next@}%
- \FN@\next@}
- \def\srdr@{\kern.16667em}
- \def\drsr@{\kern.02778em}
- \def\sldl@{\drsr@}
- \def\dlsl@{\srdr@}
- \atdef@"{\unskip\relaxnext@
- \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
- \DN@.{\FN@\nextii@}\fi\next@.}%
- \DNii@{\ifx\next`\DN@`{\FN@\nextiii@}\else
- \ifx\next\lq\DN@\lq{\FN@\nextiii@}\else
- \DN@####1{\FN@\nextiv@}\fi\fi\next@}%
- \def\nextiii@{\ifx\next`\DN@`{\sldl@``}\else\ifx\next\lq
- \DN@\lq{\sldl@``}\else\DN@{\dlsl@`}\fi\fi\next@}%
- \def\nextiv@{\ifx\next'\DN@'{\srdr@''}\else
- \ifx\next\rq\DN@\rq{\srdr@''}\else\DN@{\drsr@'}\fi\fi\next@}%
- \FN@\next@}
- \def\flushpar{\par\noindent}
- \def\textfontii{\the\textfont\tw@}
- \def\lbrace@{\delimiter"4266308 }
- \def\rbrace@{\delimiter"5267309 }
- \def\{{\RIfM@\lbrace@\else{\textfontii f}\spacefactor\@m\fi}
- \def\}{\RIfM@\rbrace@\else
- \let\@sf\empty\ifhmode\edef\@sf{\spacefactor\the\spacefactor}\fi
- {\textfontii g}\@sf\relax\fi}
- \let\lbrace\{
- \let\rbrace\}
- \def\AmSTeX{{\textfontii A\kern-.1667em%
- \lower.5ex\hbox{M}\kern-.125emS}-\TeX}
- \message{line and page breaks,}
- \def\vmodeerr@#1{\Err@{\string#1\space not allowed between paragraphs}}
- \def\mathmodeerr@#1{\Err@{\string#1\space not allowed in math mode}}
- \def\linebreak{\RIfM@\mathmodeerr@\linebreak\else
- \ifhmode\unskip\unkern\break\else\vmodeerr@\linebreak\fi\fi}
- \def\slash{\unskip/\penalty\exhyphenpenalty}
- \newskip\saveskip@
- \def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else
- \ifhmode\saveskip@\lastskip\unskip
- \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
- \else\vmodeerr@\allowlinebreak\fi\fi}
- \def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else
- \ifhmode\saveskip@\lastskip\unskip
- \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
- \else\vmodeerr@\nolinebreak\fi\fi}
- \def\newline{\relaxnext@
- \DN@{\RIfM@\expandafter\mathmodeerr@\expandafter\newline\else
- \ifhmode\ifx\next\par\else
- \expandafter\unskip\expandafter\null\expandafter\hfill\expandafter\break\fi
- \else
- \expandafter\vmodeerr@\expandafter\newline\fi\fi}%
- \FN@\next@}
- \def\dmatherr@#1{\Err@{\string#1\space not allowed in display math mode}}
- \def\nondmatherr@#1{\Err@{\string#1\space not allowed in non-display math
- mode}}
- \def\onlydmatherr@#1{\Err@{\string#1\space allowed only in display math mode}}
- \def\nonmatherr@#1{\Err@{\string#1\space allowed only in math mode}}
- \def\mathbreak{\RIfMIfI@\break\else
- \dmatherr@\mathbreak\fi\else\nonmatherr@\mathbreak\fi}
- \def\nomathbreak{\RIfMIfI@\nobreak\else
- \dmatherr@\nomathbreak\fi\else\nonmatherr@\nomathbreak\fi}
- \def\allowmathbreak{\RIfMIfI@\allowbreak\else
- \dmatherr@\allowmathbreak\fi\else\nonmatherr@\allowmathbreak\fi}
- \def\pagebreak{\RIfM@
- \ifinner\nondmatherr@\pagebreak\else\postdisplaypenalty-\@M\fi
- \else\ifvmode\removelastskip\break\else\vadjust{\break}\fi\fi}
- \def\nopagebreak{\RIfM@
- \ifinner\nondmatherr@\nopagebreak\else\postdisplaypenalty\@M\fi
- \else\ifvmode\nobreak\else\vadjust{\nobreak}\fi\fi}
- \def\nonvmodeerr@#1{\Err@{\string#1\space not allowed within a paragraph
- or in math}}
- \def\vnonvmode@#1#2{\relaxnext@\DNii@{\ifx\next\par\DN@{#1}\else
- \DN@{#2}\fi\next@}%
- \ifvmode\DN@{#1}\else
- \DN@{\FN@\nextii@}\fi\next@}
- \def\newpage{\vnonvmode@{\vfill\break}{\nonvmodeerr@\newpage}}
- \def\smallpagebreak{\vnonvmode@\smallbreak{\nonvmodeerr@\smallpagebreak}}
- \def\medpagebreak{\vnonvmode@\medbreak{\nonvmodeerr@\medpagebreak}}
- \def\bigpagebreak{\vnonvmode@\bigbreak{\nonvmodeerr@\bigpagebreak}}
- \def\NoBlackBoxes{\global\overfullrule\z@}
- \def\BlackBoxes{\global\overfullrule5\p@}
- \def\Invalid@#1{\def#1{\Err@{\Invalid@@\string#1}}}
- \def\Invalid@@{Invalid use of }
- \message{figures,}
- \Invalid@\caption
- \Invalid@\captionwidth
- \newdimen\smallcaptionwidth@
- \def\topspace{\mid@false\ins@}
- \def\midspace{\mid@true\ins@}
- \newif\ifmid@
- \def\captionfont@{}
- \def\ins@#1{\relaxnext@\allowbreak
- \smallcaptionwidth@\captionwidth@\gdef\thespace@{#1}%
- \DN@{\ifx\next\space@\DN@. {\FN@\nextii@}\else
- \DN@.{\FN@\nextii@}\fi\next@.}%
- \DNii@{\ifx\next\caption\DN@\caption{\FN@\nextiii@}%
- \else\let\next@\nextiv@\fi\next@}%
- \def\nextiv@{\vnonvmode@
- {\ifmid@\expandafter\midinsert\else\expandafter\topinsert\fi
- \vbox to\thespace@{}\endinsert}
- {\ifmid@\nonvmodeerr@\midspace\else\nonvmodeerr@\topspace\fi}}%
- \def\nextiii@{\ifx\next\captionwidth\expandafter\nextv@
- \else\expandafter\nextvi@\fi}%
- \def\nextv@\captionwidth##1##2{\smallcaptionwidth@##1\relax\nextvi@{##2}}%
- \def\nextvi@##1{\def\thecaption@{\captionfont@##1}%
- \DN@{\ifx\next\space@\DN@. {\FN@\nextvii@}\else
- \DN@.{\FN@\nextvii@}\fi\next@.}%
- \FN@\next@}%
- \def\nextvii@{\vnonvmode@
- {\ifmid@\expandafter\midinsert\else
- \expandafter\topinsert\fi\vbox to\thespace@{}\nobreak\smallskip
- \setboxz@h{\noindent\ignorespaces\thecaption@\unskip}%
- \ifdim\wdz@>\smallcaptionwidth@\centerline{\vbox{\hsize\smallcaptionwidth@
- \noindent\ignorespaces\thecaption@\unskip}}%
- \else\centerline{\boxz@}\fi\endinsert}
- {\ifmid@\nonvmodeerr@\midspace
- \else\nonvmodeerr@\topspace\fi}}%
- \FN@\next@}
- \message{comments,}
- \def\newcodes@{\catcode`\\12\catcode`\{12\catcode`\}12\catcode`\#12%
- \catcode`\%12\relax}
- \def\oldcodes@{\catcode`\\0\catcode`\{1\catcode`\}2\catcode`\#6%
- \catcode`\%14\relax}
- \def\comment{\newcodes@\endlinechar=10 \comment@}
- {\lccode`\0=`\\
- \lowercase{\gdef\comment@#1^^J{\comment@@#10endcomment\comment@@@}%
- \gdef\comment@@#10endcomment{\FN@\comment@@@}%
- \gdef\comment@@@#1\comment@@@{\ifx\next\comment@@@\let\next\comment@
- \else\def\next{\oldcodes@\endlinechar=`\^^M\relax}%
- \fi\next}}}
- \def\pr@m@s{\ifx'\next\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@}
- \def\prime{{\null\prime@\null}}
- \mathchardef\prime@="0230
- \let\dsize\displaystyle
- \let\tsize\textstyle
- \let\ssize\scriptstyle
- \let\sssize\scriptscriptstyle
- \message{math spacing,}
- \def\,{\RIfM@\mskip\thinmuskip\relax\else\kern.16667em\fi}
- \def\!{\RIfM@\mskip-\thinmuskip\relax\else\kern-.16667em\fi}
- \let\thinspace\,
- \let\negthinspace\!
- \def\medspace{\RIfM@\mskip\medmuskip\relax\else\kern.222222em\fi}
- \def\negmedspace{\RIfM@\mskip-\medmuskip\relax\else\kern-.222222em\fi}
- \def\thickspace{\RIfM@\mskip\thickmuskip\relax\else\kern.27777em\fi}
- \let\;\thickspace
- \def\negthickspace{\RIfM@\mskip-\thickmuskip\relax\else
- \kern-.27777em\fi}
- \atdef@,{\RIfM@\mskip.1\thinmuskip\else\leavevmode\null,\fi}
- \atdef@!{\RIfM@\mskip-.1\thinmuskip\else\leavevmode\null!\fi}
- \atdef@.{\RIfM@&&\else\leavevmode.\spacefactor3000 \fi}
- \def\and{\DOTSB\;\mathchar"3026 \;}
- \def\implies{\DOTSB\;\Longrightarrow\;}
- \def\impliedby{\DOTSB\;\Longleftarrow\;}
- \message{fractions,}
- \def\frac#1#2{{#1\over#2}}
- \def\dfrac#1#2{{\displaystyle{#1\over#2}}}
- \def\tfrac#1#2{{\textstyle{#1\over#2}}}
- \newdimen\ex@
- \ex@.2326ex
- \Invalid@\thickness
- \def\thickfrac{\relaxnext@
- \DN@{\ifx\next\thickness\let\next@\nextii@\else
- \DN@{\nextii@\thickness1}\fi\next@}%
- \DNii@\thickness##1##2##3{{##2\above##1\ex@##3}}%
- \FN@\next@}
- \def\fracwithdelims#1#2#3#4{{#3\overwithdelims#1#2#4}}
- \def\thickfracwithdelims#1#2{\relaxnext@\def\ldelim@{#1}\def\rdelim@{#2}%
- \DN@{\ifx\next\thickness\let\next@\nextii@\else
- \DN@{\nextii@\thickness1}\fi\next@}%
- \DNii@\thickness##1##2##3{{##2\abovewithdelims
- \ldelim@\rdelim@##1\ex@##3}}%
- \FN@\next@}
- \def\binom#1#2{{#1\choose#2}}
- \def\dbinom#1#2{{\displaystyle{#1\choose#2}}}
- \def\tbinom#1#2{{\textstyle{#1\choose#2}}}
- \def\:{\nobreak\hskip.1111em\mathpunct{}\nonscript\mkern-\thinmuskip{:}\hskip
- .3333emplus.0555em\relax}
- \def\snug{\unskip\kern-\mathsurround}
- \message{smash commands,}
- \def\topsmash{\top@true\bot@false\smash@}
- \def\botsmash{\top@false\bot@true\smash@}
- \newif\iftop@
- \newif\ifbot@
- \def\smash{\top@true\bot@true\smash@}
- \def\smash@{\RIfM@\expandafter\mathpalette\expandafter\mathsm@sh\else
- \expandafter\makesm@sh\fi}
- \def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\leavevmode\boxz@}
- \message{large operator symbols,}
- \def\LimitsOnSums{\global\let\slimits@\displaylimits}
- \def\NoLimitsOnSums{\global\let\slimits@\nolimits}
- \LimitsOnSums
- \mathchardef\coprod@="1360 \def\coprod{\DOTSB\coprod@\slimits@}
- \mathchardef\bigvee@="1357 \def\bigvee{\DOTSB\bigvee@\slimits@}
- \mathchardef\bigwedge@="1356 \def\bigwedge{\DOTSB\bigwedge@\slimits@}
- \mathchardef\biguplus@="1355 \def\biguplus{\DOTSB\biguplus@\slimits@}
- \mathchardef\bigcap@="1354 \def\bigcap{\DOTSB\bigcap@\slimits@}
- \mathchardef\bigcup@="1353 \def\bigcup{\DOTSB\bigcup@\slimits@}
- \mathchardef\prod@="1351 \def\prod{\DOTSB\prod@\slimits@}
- \mathchardef\sum@="1350 \def\sum{\DOTSB\sum@\slimits@}
- \mathchardef\bigotimes@="134E \def\bigotimes{\DOTSB\bigotimes@\slimits@}
- \mathchardef\bigoplus@="134C \def\bigoplus{\DOTSB\bigoplus@\slimits@}
- \mathchardef\bigodot@="134A \def\bigodot{\DOTSB\bigodot@\slimits@}
- \mathchardef\bigsqcup@="1346 \def\bigsqcup{\DOTSB\bigsqcup@\slimits@}
- \message{integrals,}
- \def\LimitsOnInts{\global\let\ilimits@\displaylimits}
- \def\NoLimitsOnInts{\global\let\ilimits@\nolimits}
- \NoLimitsOnInts
- \def\int{\DOTSI\intop\ilimits@}
- \def\oint{\DOTSI\ointop\ilimits@}
- \def\intic@{\mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}}
- \def\negintic@{\mathchoice
- {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}}
- \def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
- \def\intdots@{\mathchoice{\plaincdots@}
- {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}
- {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}
- {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
- \newcount\intno@
- \def\iint{\DOTSI\intno@\tw@\FN@\ints@}
- \def\iiint{\DOTSI\intno@\thr@@\FN@\ints@}
- \def\iiiint{\DOTSI\intno@4 \FN@\ints@}
- \def\idotsint{\DOTSI\intno@\z@\FN@\ints@}
- \def\ints@{\findlimits@\ints@@}
- \newif\iflimtoken@
- \newif\iflimits@
- \def\findlimits@{\limtoken@true\ifx\next\limits\limits@true
- \else\ifx\next\nolimits\limits@false\else
- \limtoken@false\ifx\ilimits@\nolimits\limits@false\else
- \ifinner\limits@false\else\limits@true\fi\fi\fi\fi}
- \def\multint@{\int\ifnum\intno@=\z@\intdots@ %1
- \else\intkern@\fi %2
- \ifnum\intno@>\tw@\int\intkern@\fi %3
- \ifnum\intno@>\thr@@\int\intkern@\fi %4
- \int} %5
- \def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi
- \ifnum\intno@>\tw@\intop\intkern@\fi
- \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}
- \def\ints@@{\iflimtoken@ %1
- \def\ints@@@{\iflimits@\negintic@\mathop{\intic@\multintlimits@}\limits %2
- \else\multint@\nolimits\fi %3
- \eat@} %4
- \else %5
- \def\ints@@@{\iflimits@\negintic@
- \mathop{\intic@\multintlimits@}\limits\else
- \multint@\nolimits\fi}\fi\ints@@@}
- \def\LimitsOnNames{\global\let\nlimits@\displaylimits}
- \def\NoLimitsOnNames{\global\let\nlimits@\nolimits@}
- \LimitsOnNames
- \def\nolimits@{\relaxnext@
- \DN@{\ifx\next\limits\DN@\limits{\nolimits}\else
- \let\next@\nolimits\fi\next@}%
- \FN@\next@}
- \message{operator names,}
- \def\newmcodes@{\mathcode`\'"27\mathcode`\*"2A\mathcode`\."613A%
- \mathcode`\-"2D\mathcode`\/"2F\mathcode`\:"603A }
- \def\operatorname#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nolimits@}
- \def\operatornamewithlimits#1{\mathop{\newmcodes@\kern\z@\fam\z@#1}\nlimits@}
- \def\qopname@#1{\mathop{\fam\z@#1}\nolimits@}
- \def\qopnamewl@#1{\mathop{\fam\z@#1}\nlimits@}
- \def\arccos{\qopname@{arccos}}
- \def\arcsin{\qopname@{arcsin}}
- \def\arctan{\qopname@{arctan}}
- \def\arg{\qopname@{arg}}
- \def\cos{\qopname@{cos}}
- \def\cosh{\qopname@{cosh}}
- \def\cot{\qopname@{cot}}
- \def\coth{\qopname@{coth}}
- \def\csc{\qopname@{csc}}
- \def\deg{\qopname@{deg}}
- \def\det{\qopnamewl@{det}}
- \def\dim{\qopname@{dim}}
- \def\exp{\qopname@{exp}}
- \def\gcd{\qopnamewl@{gcd}}
- \def\hom{\qopname@{hom}}
- \def\inf{\qopnamewl@{inf}}
- \def\injlim{\qopnamewl@{inj\,lim}}
- \def\ker{\qopname@{ker}}
- \def\lg{\qopname@{lg}}
- \def\lim{\qopnamewl@{lim}}
- \def\liminf{\qopnamewl@{lim\,inf}}
- \def\limsup{\qopnamewl@{lim\,sup}}
- \def\ln{\qopname@{ln}}
- \def\log{\qopname@{log}}
- \def\max{\qopnamewl@{max}}
- \def\min{\qopnamewl@{min}}
- \def\Pr{\qopnamewl@{Pr}}
- \def\projlim{\qopnamewl@{proj\,lim}}
- \def\sec{\qopname@{sec}}
- \def\sin{\qopname@{sin}}
- \def\sinh{\qopname@{sinh}}
- \def\sup{\qopnamewl@{sup}}
- \def\tan{\qopname@{tan}}
- \def\tanh{\qopname@{tanh}}
- \def\varinjlim{\mathop{\vtop{\ialign{##\crcr
- \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\rightarrowfill\crcr
- \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
- \def\varprojlim{\mathop{\vtop{\ialign{##\crcr
- \hfil\rm lim\hfil\crcr\noalign{\nointerlineskip}\leftarrowfill\crcr
- \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}
- \def\varliminf{\mathop{\underline{\vrule height\z@ depth.2exwidth\z@
- \hbox{\rm lim}}}}
- \def\varlimsup{\mathop{\overline{\hbox{\rm lim}}}}
- \newdimen\buffer@
- \buffer@\fontdimen13 \tenex
- \newdimen\buffer
- \buffer\buffer@
- \def\ChangeBuffer#1{\fontdimen13 \tenex#1\relax
- \global\buffer\fontdimen13 \tenex}
- \def\ResetBuffer{\fontdimen13 \tenex\buffer@\global\buffer\buffer@}
- \def\shave#1{\mathop{\hbox{$\m@th\fontdimen13 \tenex\z@ %1
- \displaystyle{#1}$}}\fontdimen13 \tenex\buffer}
- \def\topshave#1{\mathop{\topsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
- \def\botshave#1{\mathop{\botsmash{\displaystyle{#1}}\vphantom{\shave{#1}}}}
- \message{multilevel sub/superscripts,}
- \Invalid@\\
- \def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
- \Invalid@\vspace
- \def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}}
- \def\multilimits@{\bgroup\vspace@\Let@
- \baselineskip\fontdimen10 \scriptfont\tw@
- \advance\baselineskip\fontdimen12 \scriptfont\tw@
- \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
- \lineskiplimit\lineskip
- \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}
- \def\Sb{_\multilimits@}
- \def\endSb{\crcr\egroup\egroup\egroup}
- \def\Sp{^\multilimits@}
- \let\endSp\endSb
- \def\spreadlines#1{\RIfMIfI@\onlydmatherr@\spreadlines\else
- \openup#1\relax\fi\else\onlydmatherr@\spreadlines\fi}
- \def\Mathstrut@{\copy\Mathstrutbox@}
- \newbox\Mathstrutbox@
- \setbox\Mathstrutbox@\null
- \setboxz@h{$\m@th($}
- \ht\Mathstrutbox@\ht\z@
- \dp\Mathstrutbox@\dp\z@
- \message{matrices,}
- \newdimen\spreadmlines@
- \def\spreadmatrixlines#1{\RIfMIfI@
- \onlydmatherr@\spreadmatrixlines\else
- \spreadmlines@#1\relax\fi\else\onlydmatherr@\spreadmatrixlines\fi}
- \def\matrix{\null\,\vcenter\bgroup\Let@\vspace@
- \normalbaselines\openup\spreadmlines@\ialign
- \bgroup\hfil$\m@th##$\hfil&&\quad\hfil$\m@th##$\hfil\crcr
- \Mathstrut@\crcr\noalign{\kern-\baselineskip}}
- \def\endmatrix{\crcr\Mathstrut@\crcr\noalign{\kern-\baselineskip}\egroup
- \egroup\,}
- \def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@}
- \newtoks\hashtoks@
- \hashtoks@{#}
- \def\format@#1\\{\def\preamble@{#1}%
- \def\l{$\m@th\the\hashtoks@$\hfil}%
- \def\c{\hfil$\m@th\the\hashtoks@$\hfil}%
- \def\r{\hfil$\m@th\the\hashtoks@$}%
- \edef\preamble@@{\preamble@}\ifnum`{=0 \fi\iffalse}\fi
- \ialign\bgroup\span\preamble@@\crcr}
- \def\smallmatrix{\null\,\vcenter\bgroup\vspace@\Let@
- \baselineskip9\ex@\lineskip\ex@
- \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil
- $\m@th\scriptstyle{##}$\hfil\crcr}
- \def\endsmallmatrix{\crcr\egroup\egroup\,}
- \def\pmatrix{\left(\matrix}
- \def\endpmatrix{\endmatrix\right)}
- \def\bmatrix{\left[\matrix}
- \def\endbmatrix{\endmatrix\right]}
- \def\vmatrix{\left|\matrix}
- \def\endvmatrix{\endmatrix\right|}
- \def\Vmatrix{\left\|\matrix}
- \def\endVmatrix{\endmatrix\right\|}
- \def\hdots{\mathinner{\ldotp\ldotp\ldotp}}
- \newmuskip\dotsspace@
- \dotsspace@1.5mu
- \def\strip@#1 {#1}
- \def\spacehdots#1\for#2{\multispan{#2}\xleaders
- \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
- \def\hdotsfor#1{\spacehdots\@ne\for{#1}}
- \def\multispan@#1{\omit\mscount#1\unskip\loop\ifnum\mscount>\@ne\sp@n\repeat}
- \def\spaceinnerhdots#1\for#2\after#3{\multispan@{\strip@#2 }#3\xleaders
- \hbox{$\m@th\mkern\strip@#1 \dotsspace@.\mkern\strip@#1 \dotsspace@$}\hfill}
- \def\innerhdotsfor#1\after#2{\spaceinnerhdots\@ne\for#1\after{#2}}
- \def\cases{\bgroup\spreadmlines@\jot\left\{\,\matrix\format\l&\quad\l\\}
- \def\endcases{\endmatrix\right.\egroup}
- \message{multiline displays,}
- \newif\ifinany@
- \newif\ifinalign@
- \newif\ifingather@
- \def\strut@{\copy\strutbox@}
- \newbox\strutbox@
- \setbox\strutbox@\hbox{\vrule height8\p@ depth3\p@ width\z@}
- \def\topaligned{\null\,\vtop\aligned@}
- \def\botaligned{\null\,\vbox\aligned@}
- \def\aligned{\null\,\vcenter\aligned@}
- \def\aligned@{\bgroup\vspace@\Let@
- \ifinany@\else\openup\jot\fi\ialign
- \bgroup\hfil\strut@$\m@th\displaystyle{##}$&
- $\m@th\displaystyle{{}##}$\hfil\crcr}
- \def\endaligned{\crcr\egroup\egroup}
- \let\endtopaligned\endaligned
- \let\endbotaligned\endaligned
- \def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@
- \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr}
- \newcount\atcount@
- \def\doat@#1{\toks@{\hfil\strut@$\m@th
- \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
- {{}\the\hashtoks@}$\hfil}% %1
- \atcount@#1\relax\advance\atcount@\m@ne %2
- \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th
- \displaystyle{\the\hashtoks@}$&$\m@th
- \displaystyle{{}\the\hashtoks@}$\hfil}\advance
- \atcount@\m@ne\repeat %3
- \xdef\preamble@{\the\toks@}\xdef\preamble@@{\preamble@}}
- \let\endalignedat\endaligned
- \def\gathered{\null\,\vcenter\bgroup\vspace@\Let@
- \ifinany@\else\openup\jot\fi\ialign
- \bgroup\hfil\strut@$\m@th\displaystyle{##}$\hfil\crcr}
- \def\endgathered{\crcr\egroup\egroup}
- \newif\iftagsleft@
- \def\TagsOnLeft{\global\tagsleft@true}
- \def\TagsOnRight{\global\tagsleft@false}
- \TagsOnLeft
- \newif\ifmathtags@
- \def\TagsAsMath{\global\mathtags@true}
- \def\TagsAsText{\global\mathtags@false}
- \TagsAsText
- \def\tagform@#1{\hbox{\rm(\ignorespaces#1\unskip)}}
- \def\thetag{\leavevmode\tagform@}
- \def\tag#1$${\iftagsleft@\leqno\else\eqno\fi %1
- \maketag@#1\maketag@ %2
- $$} %3
- \def\maketag@{\FN@\maketag@@}
- \def\maketag@@{\ifx\next"\expandafter\maketag@@@\else\expandafter\maketag@@@@
- \fi}
- \def\maketag@@@"#1"#2\maketag@{\hbox{\rm#1}} %1
- \def\maketag@@@@#1\maketag@{\ifmathtags@\tagform@{$\m@th#1$}\else
- \tagform@{#1}\fi}
- \interdisplaylinepenalty\@M
- \def\allowdisplaybreaks{\RIfMIfI@
- \onlydmatherr@\allowdisplaybreaks\else
- \interdisplaylinepenalty\z@\fi\else\onlydmatherr@\allowdisplaybreaks\fi}
- \Invalid@\allowdisplaybreak
- \Invalid@\displaybreak
- \Invalid@\intertext
- \def\allowdisplaybreak@{\def\allowdisplaybreak{\crcr\noalign{\allowbreak}}}
- \def\displaybreak@{\def\displaybreak{\crcr\noalign{\break}}}
- \def\intertext@{\def\intertext##1{\crcr\noalign{%
- \penalty\postdisplaypenalty \vskip\belowdisplayskip
- \vbox{\normalbaselines\noindent##1}%
- \penalty\predisplaypenalty \vskip\abovedisplayskip}}}
- \newskip\centering@
- \centering@\z@ plus\@m\p@
- \def\align{\relax\ifingather@\DN@{\csname align (in
- \string\gather)\endcsname}\else
- \ifmmode\ifinner\DN@{\onlydmatherr@\align}\else
- \let\next@\align@\fi
- \else\DN@{\onlydmatherr@\align}\fi\fi\next@}
- \newhelp\andhelp@
- {An extra & here is so disastrous that you should probably exit^^J
- and fix things up.}
- \newif\iftag@
- \newcount\and@
- \def\align@{\inalign@true\inany@true
- \vspace@\allowdisplaybreak@\displaybreak@\intertext@
- \def\tag{\global\tag@true\ifnum\and@=\z@\DN@{&&}\else
- \DN@{&}\fi\next@}%
- \iftagsleft@\DN@{\csname align \endcsname}\else
- \DN@{\csname align \space\endcsname}\fi\next@}
- \def\Tag@{\iftag@\else\errhelp\andhelp@\err@{Extra & on this line}\fi}
- \newdimen\lwidth@
- \newdimen\rwidth@
- \newdimen\maxlwidth@
- \newdimen\maxrwidth@
- \newdimen\totwidth@
- \def\measure@#1\endalign{\lwidth@\z@\rwidth@\z@\maxlwidth@\z@\maxrwidth@\z@
- \global\and@\z@ %1
- \setbox@ne\vbox %2
- {\everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@ %3
- \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}% %4
- \global\lwidth@\wdz@ %5
- \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi %6
- \global\advance\and@\@ne %7
- &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}\global\rwidth@\wdz@ %8
- \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi %9
- \global\advance\and@\@ne %10
- &\Tag@
- \eat@{##}\crcr#1\crcr}}% %11
- \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@} %12
- \def\displ@y@{\global\dt@ptrue\openup\jot
- \everycr{\noalign{\global\tag@false\global\and@\z@\ifdt@p\global\dt@pfalse
- \vskip-\lineskiplimit\vskip\normallineskiplimit\else
- \penalty\interdisplaylinepenalty\fi}}}
- \def\black@#1{\noalign{\ifdim#1>\displaywidth
- \dimen@\prevdepth\nointerlineskip %1
- \vskip-\ht\strutbox@\vskip-\dp\strutbox@ %2
- \vbox{\noindent\hbox to#1{\strut@\hfill}}% %3
- \prevdepth\dimen@ %4
- \fi}}
- \expandafter\def\csname align \space\endcsname#1\endalign
- {\measure@#1\endalign\global\and@\z@ %1
- \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi %2
- \Let@\tabskip\centering@ %3
- \halign to\displaywidth
- {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}% %4
- \global\lwidth@\wdz@\boxz@\global\advance\and@\@ne %5
- \tabskip\z@skip %6
- &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}% %7
- \global\rwidth@\wdz@\boxz@\hfill\global\advance\and@\@ne %8
- \tabskip\centering@ %9
- &\setboxz@h{\@lign\strut@\maketag@##\maketag@}% %10
- \dimen@\displaywidth\advance\dimen@-\totwidth@
- \divide\dimen@\tw@\advance\dimen@\maxrwidth@\advance\dimen@-\rwidth@ %11
- \ifdim\dimen@<\tw@\wdz@\llap{\vtop{\normalbaselines\null\boxz@}}% %12
- \else\llap{\boxz@}\fi %13
- \tabskip\z@skip %14
- \crcr#1\crcr %15
- \black@\totwidth@}} %16
- \newdimen\lineht@
- \expandafter\def\csname align \endcsname#1\endalign{\measure@#1\endalign
- \global\and@\z@
- \ifdim\totwidth@>\displaywidth\let\displaywidth@\totwidth@\else
- \let\displaywidth@\displaywidth\fi %1
- \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi
- \Let@\tabskip\centering@\halign to\displaywidth
- {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##}$}%
- \global\lwidth@\wdz@\global\lineht@\ht\z@ %2
- \boxz@\global\advance\and@\@ne
- \tabskip\z@skip&\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}%
- \global\rwidth@\wdz@\ifdim\ht\z@>\lineht@\global\lineht@\ht\z@\fi %3
- \boxz@\hfil\global\advance\and@\@ne
- \tabskip\centering@&\kern-\displaywidth@ %4
- \setboxz@h{\@lign\strut@\maketag@##\maketag@}%
- \dimen@\displaywidth\advance\dimen@-\totwidth@
- \divide\dimen@\tw@\advance\dimen@\maxlwidth@\advance\dimen@-\lwidth@
- \ifdim\dimen@<\tw@\wdz@
- \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}\else
- \rlap{\boxz@}\fi
- \tabskip\displaywidth@\crcr#1\crcr\black@\totwidth@}}
- \expandafter\def\csname align (in \string\gather)\endcsname
- #1\endalign{\vcenter{\align@#1\endalign}}
- \Invalid@\endalign
- \newif\ifxat@
- \def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else
- \DN@{\csname alignat \endcsname}\fi\else
- \DN@{\onlydmatherr@\alignat}\fi\next@}
- \newif\ifmeasuring@
- \newbox\savealignat@
- \expandafter\def\csname alignat \endcsname#1#2\endalignat %1
- {\inany@true\xat@false
- \def\tag{\global\tag@true\count@#1\relax\multiply\count@\tw@
- \xdef\tag@{}\loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne
- \repeat\tag@}%
- \vspace@\allowdisplaybreak@\displaybreak@\intertext@
- \displ@y@\measuring@true %2
- \setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
- \attag@{#1}% %3
- \vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
- \measuring@false %4
- \Let@\attag@{#1}% %5
- \tabskip\centering@\halign to\displaywidth
- {\span\preamble@@\crcr#2\crcr %6
- \black@{\wd\savealignat@}}} %7
- \Invalid@\endalignat
- \def\xalignat{\RIfMIfI@
- \DN@{\onlydmatherr@\xalignat}\else
- \DN@{\csname xalignat \endcsname}\fi\else
- \DN@{\onlydmatherr@\xalignat}\fi\next@}
- \expandafter\def\csname xalignat \endcsname#1#2\endxalignat
- {\inany@true\xat@true
- \def\tag{\global\tag@true\def\tag@{}\count@#1\relax\multiply\count@\tw@
- \loop\ifnum\count@>\and@\xdef\tag@{&\tag@}\advance\count@\m@ne\repeat\tag@}%
- \vspace@\allowdisplaybreak@\displaybreak@\intertext@
- \displ@y@\measuring@true\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
- \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
- \measuring@false\Let@
- \attag@{#1}\tabskip\centering@\halign to\displaywidth
- {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
- \def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@ %1
- \let\Tag@=0\let\maketag@=0% %2
- \ifmeasuring@\def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
- \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}\else
- \let\llap@\llap\let\rlap@\rlap\fi %3
- \toks@{\hfil\strut@$\m@th\displaystyle{\@lign\the\hashtoks@}$\tabskip\z@skip
- \global\advance\and@\@ne&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil
- \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}% %4
- \iftagsleft@
- \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
- \rlap@{\@lign\maketag@\the\hashtoks@\maketag@}%
- \global\advance\and@\@ne\tabskip\displaywidth}\else
- \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\maketag@
- \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi %5
- \atcount@#1\relax\advance\atcount@\m@ne
- \loop\ifnum\atcount@>\z@
- \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
- \the\hashtoks@}$\global\advance\and@\@ne
- \tabskip\z@skip&$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil\ifxat@
- \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
- \repeat %6
- \xdef\preamble@{\the\toks@\the\toks@@}% %7
- \xdef\preamble@@{\preamble@}% %8
- \let\maketag@\Maketag@\let\Tag@\TAG@} %9
- \Invalid@\endxalignat
- \def\xxalignat{\RIfMIfI@
- \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat
- \endcsname}\fi\else
- \DN@{\onlydmatherr@\xxalignat}\fi\next@}
- \expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true
- \vspace@\allowdisplaybreak@\displaybreak@\intertext@
- \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
- \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
- \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth
- {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
- \def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
- $\m@th\displaystyle{\the\hashtoks@}$&%
- $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}%
- \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
- \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
- \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
- \tabskip\centering@}\advance\atcount@\m@ne\repeat
- \xdef\preamble@{\the\toks@\tabskip\z@skip}\xdef\preamble@@{\preamble@}}
- \Invalid@\endxxalignat
- \newdimen\gwidth@
- \newdimen\gmaxwidth@
- \def\gmeasure@#1\endgather{\gwidth@\z@\gmaxwidth@\z@\setbox@ne\vbox{\Let@
- \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@
- \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi
- &\eat@{##}\crcr#1\crcr}}}
- \def\gather{\RIfMIfI@\DN@{\onlydmatherr@\gather}\else
- \ingather@true\inany@true\def\tag{&}%
- \vspace@\allowdisplaybreak@\displaybreak@\intertext@
- \displ@y\Let@
- \iftagsleft@\DN@{\csname gather \endcsname}\else
- \DN@{\csname gather \space\endcsname}\fi\fi
- \else\DN@{\onlydmatherr@\gather}\fi\next@}
- \expandafter\def\csname gather \space\endcsname#1\endgather
- {\gmeasure@#1\endgather\tabskip\centering@
- \halign to\displaywidth{\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
- \global\gwidth@\wdz@\boxz@\hfil&
- \setboxz@h{\strut@{\maketag@##\maketag@}}%
- \dimen@\displaywidth\advance\dimen@-\gwidth@
- \ifdim\dimen@>\tw@\wdz@\llap{\boxz@}\else
- \llap{\vtop{\normalbaselines\null\boxz@}}\fi
- \tabskip\z@skip\crcr#1\crcr\black@\gmaxwidth@}}
- \newdimen\glineht@
- \expandafter\def\csname gather \endcsname#1\endgather{\gmeasure@#1\endgather
- \ifdim\gmaxwidth@>\displaywidth\let\gdisplaywidth@\gmaxwidth@\else
- \let\gdisplaywidth@\displaywidth\fi\tabskip\centering@\halign to\displaywidth
- {\hfil\strut@\setboxz@h{$\m@th\displaystyle{##}$}%
- \global\gwidth@\wdz@\global\glineht@\ht\z@\boxz@\hfil&\kern-\gdisplaywidth@
- \setboxz@h{\strut@{\maketag@##\maketag@}}%
- \dimen@\displaywidth\advance\dimen@-\gwidth@
- \ifdim\dimen@>\tw@\wdz@\rlap{\boxz@}\else
- \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}\fi
- \tabskip\gdisplaywidth@\crcr#1\crcr\black@\gmaxwidth@}}
- \newif\ifctagsplit@
- \def\CenteredTagsOnSplits{\global\ctagsplit@true}
- \def\TopOrBottomTagsOnSplits{\global\ctagsplit@false}
- \TopOrBottomTagsOnSplits
- \def\split{\relax\ifinany@\let\next@\insplit@\else
- \ifmmode\ifinner\def\next@{\onlydmatherr@\split}\else
- \let\next@\outsplit@\fi\else
- \def\next@{\onlydmatherr@\split}\fi\fi\next@}
- \def\insplit@{\global\setbox\z@\vbox\bgroup\vspace@\Let@\ialign\bgroup
- \hfil\strut@$\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr}
- \def\endsplit{\crcr\egroup\egroup\iftagsleft@\expandafter\lendsplit@\else
- \expandafter\rendsplit@\fi}
- \def\rendsplit@{\global\setbox9 \vbox
- {\unvcopy\z@\global\setbox8 \lastbox\unskip}% %1
- \setbox@ne\hbox{\unhcopy8 \unskip\global\setbox\tw@\lastbox
- \unskip\global\setbox\thr@@\lastbox}% %2
- \global\setbox7 \hbox{\unhbox\tw@\unskip}% %3
- \ifinalign@\ifctagsplit@ %4
- \gdef\split@{\hbox to\wd\thr@@{}&
- \vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}}% %5
- \else\gdef\split@{&\vbox{\moveleft\wd\thr@@\box9}\crcr
- \box\thr@@&\box7}\fi %6
- \else %7
- \ifctagsplit@\gdef\split@{\vcenter{\boxz@}}\else
- \gdef\split@{\box9\crcr\hbox{\box\thr@@\box7}}\fi
- \fi
- \split@} %8
- \def\lendsplit@{\global\setbox9\vtop{\unvcopy\z@}% %1
- \setbox@ne\vbox{\unvcopy\z@\global\setbox8\lastbox}% %2
- \setbox@ne\hbox{\unhcopy8\unskip\setbox\tw@\lastbox
- \unskip\global\setbox\thr@@\lastbox}% %3
- \ifinalign@\ifctagsplit@ %4
- \gdef\split@{\hbox to\wd\thr@@{}&
- \vcenter{\vbox{\moveleft\wd\thr@@\box9}}}% %5
- \else %6
- \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box9}}\fi
- \else
- \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else
- \gdef\split@{\box9}\fi
- \fi\split@}
- \def\outsplit@#1$${\align\insplit@#1\endalign$$}
- \newdimen\multlinegap@
- \multlinegap@1em
- \newdimen\multlinetaggap@
- \multlinetaggap@1em
- \def\MultlineGap#1{\global\multlinegap@#1\relax}
- \def\multlinegap#1{\RIfMIfI@\onlydmatherr@\multlinegap\else
- \multlinegap@#1\relax\fi\else\onlydmatherr@\multlinegap\fi}
- \def\nomultlinegap{\multlinegap{\z@}}
- \def\multline{\RIfMIfI@
- \DN@{\onlydmatherr@\multline}\else
- \DN@{\multline@}\fi\else
- \DN@{\onlydmatherr@\multline}\fi\next@}
- \newif\iftagin@
- \def\tagin@#1{\tagin@false\in@\tag{#1}\ifin@\tagin@true\fi}
- \def\multline@#1$${\inany@true\vspace@\allowdisplaybreak@\displaybreak@
- \tagin@{#1}\iftagsleft@\DN@{\multline@l#1$$}\else
- \DN@{\multline@r#1$$}\fi\next@}
- \newdimen\mwidth@
- \def\rmmeasure@#1\endmultline{%
- \def\shoveleft##1{##1}\def\shoveright##1{##1}% %1
- \setbox@ne\vbox{\Let@\halign{\setboxz@h
- {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@
- \crcr#1\crcr}}}
- \newdimen\mlineht@
- \newif\ifzerocr@
- \newif\ifonecr@
- \def\lmmeasure@#1\endmultline{\global\zerocr@true\global\onecr@false
- \everycr{\noalign{\ifonecr@\global\onecr@false\fi
- \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}% %1
- \def\shoveleft##1{##1}\def\shoveright##1{##1}%
- \setbox@ne\vbox{\Let@\halign{\setboxz@h
- {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@
- \global\mlineht@\ht\z@\fi\crcr#1\crcr}}}
- \newbox\mtagbox@
- \newdimen\ltwidth@
- \newdimen\rtwidth@
- \def\multline@l#1$${\iftagin@\DN@{\lmultline@@#1$$}\else
- \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
- \lmultline@@@#1$$}\fi\next@}
- \def\lmultline@@#1\endmultline\tag#2$${%
- \setbox\mtagbox@\hbox{\maketag@#2\maketag@}% %1
- \lmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
- \advance\dimen@\multlinetaggap@ %2
- \ifdim\dimen@>\displaywidth\ltwidth@\z@\else\ltwidth@\wd\mtagbox@\fi %3
- \lmultline@@@#1\endmultline$$}
- \def\lmultline@@@{\displ@y
- \def\shoveright##1{##1\hfilneg\hskip\multlinegap@}%
- \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
- \setbox@ne\hbox{$\m@th\displaystyle##1$}%
- \hfilneg
- \iftagin@
- \ifdim\ltwidth@>\z@\hskip\ltwidth@\hskip\multlinetaggap@\fi
- \else\hskip\multlinegap@\fi\hskip.5\wd@ne\hskip-.5\wdz@##1}% %1
- \halign\bgroup\Let@\hbox to\displaywidth
- {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
- \hfilneg %2
- \iftagin@ %3
- \ifdim\ltwidth@>\z@ %4
- \box\mtagbox@\hskip\multlinetaggap@ %5
- \else
- \rlap{\vbox{\normalbaselines\hbox{\strut@\box\mtagbox@}%
- \vbox to\mlineht@{}}}\fi %6
- \else\hskip\multlinegap@\fi} %7
- \def\multline@r#1$${\iftagin@\DN@{\rmultline@@#1$$}\else
- \DN@{\setbox\mtagbox@\null\ltwidth@\z@\rtwidth@\z@
- \rmultline@@@#1$$}\fi\next@}
- \def\rmultline@@#1\endmultline\tag#2$${\ltwidth@\z@
- \setbox\mtagbox@\hbox{\maketag@#2\maketag@}%
- \rmmeasure@#1\endmultline\dimen@\mwidth@\advance\dimen@\wd\mtagbox@
- \advance\dimen@\multlinetaggap@
- \ifdim\dimen@>\displaywidth\rtwidth@\z@\else\rtwidth@\wd\mtagbox@\fi
- \rmultline@@@#1\endmultline$$}
- \def\rmultline@@@{\displ@y
- \def\shoveright##1{##1\hfilneg\iftagin@\ifdim\rtwidth@>\z@
- \hskip\rtwidth@\hskip\multlinetaggap@\fi\else\hskip\multlinegap@\fi}%
- \def\shoveleft##1{\setboxz@h{$\m@th\displaystyle{}##1$}%
- \setbox@ne\hbox{$\m@th\displaystyle##1$}%
- \hfilneg\hskip\multlinegap@\hskip.5\wd@ne\hskip-.5\wdz@##1}%
- \halign\bgroup\Let@\hbox to\displaywidth
- {\strut@$\m@th\displaystyle\hfil{}##\hfil$}\crcr
- \hfilneg\hskip\multlinegap@}
- \def\endmultline{\iftagsleft@\expandafter\lendmultline@\else
- \expandafter\rendmultline@\fi}
- \def\lendmultline@{\hfilneg\hskip\multlinegap@\crcr\egroup}
- \def\rendmultline@{\iftagin@ %1
- \ifdim\rtwidth@>\z@ %2
- \hskip\multlinetaggap@\box\mtagbox@ %3
- \else\llap{\vtop{\normalbaselines\null\hbox{\strut@\box\mtagbox@}}}\fi %4
- \else\hskip\multlinegap@\fi %5
- \hfilneg\crcr\egroup}
- \def\bmod{\mskip-\medmuskip\mkern5mu\mathbin{\fam\z@ mod}\penalty900
- \mkern5mu\mskip-\medmuskip}
- \def\pmod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi
- ({\fam\z@ mod}\,\,#1)}
- \def\pod#1{\allowbreak\ifinner\mkern8mu\else\mkern18mu\fi(#1)}
- \def\mod#1{\allowbreak\ifinner\mkern12mu\else\mkern18mu\fi{\fam\z@ mod}\,\,#1}
- \message{continued fractions,}
- \newcount\cfraccount@
- \def\cfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut
- \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
- \def\lcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut
- \iffalse{\fi\def\\{\hfill\over\displaystyle}\iffalse}\fi}
- \def\rcfrac{\bgroup\bgroup\advance\cfraccount@\@ne\strut\hfill
- \iffalse{\fi\def\\{\over\displaystyle}\iffalse}\fi}
- \def\gloop@#1\repeat{\gdef\body{#1}\iterate}
- \def\endcfrac{\gloop@\ifnum\cfraccount@>\z@\global\advance\cfraccount@\m@ne
- \egroup\hskip-\nulldelimiterspace\egroup\repeat}
- \message{compound symbols,}
- \def\binrel@#1{\setboxz@h{\thinmuskip0mu
- \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
- \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
- \@ne mu${}#1{}\m@th$}%
- \setbox\tw@\hbox{\hskip\wd@ne\hskip-\wdz@}}
- \def\overset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
- \mathbin{\mathop{\kern\z@#2}\limits^{#1}}\else\ifdim\wd\tw@>\z@
- \mathrel{\mathop{\kern\z@#2}\limits^{#1}}\else
- {\mathop{\kern\z@#2}\limits^{#1}}{}\fi\fi}
- \def\underset#1\to#2{\binrel@{#2}\ifdim\wd\tw@<\z@
- \mathbin{\mathop{\kern\z@#2}\limits_{#1}}\else\ifdim\wd\tw@>\z@
- \mathrel{\mathop{\kern\z@#2}\limits_{#1}}\else
- {\mathop{\kern\z@#2}\limits_{#1}}{}\fi\fi}
- \def\oversetbrace#1\to#2{\overbrace{#2}^{#1}}
- \def\undersetbrace#1\to#2{\underbrace{#2}_{#1}}
- \def\sideset#1\and#2\to#3{%
- \setbox@ne\hbox{$\dsize{\vphantom{#3}}#1{#3}\m@th$}%
- \setbox\tw@\hbox{$\dsize{#3}#2\m@th$}%
- \hskip\wd@ne\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wd@ne
- {\vphantom{#3}}#1{#3}#2}}
- \def\rightarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
- $#1\m@th\copy\z@\mkern-6mu\cleaders
- \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
- \mkern-6mu\mathord\rightarrow$}
- \def\leftarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
- $#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
- \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
- \mkern-6mu\box\z@$}
- \def\leftrightarrowfill@#1{\setboxz@h{$#1-\m@th$}\ht\z@\z@
- $#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
- \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
- \mkern-6mu\mathord\rightarrow$}
- \def\overrightarrow{\mathpalette\overrightarrow@}
- \def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr
- \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
- \let\overarrow\overrightarrow
- \def\overleftarrow{\mathpalette\overleftarrow@}
- \def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr
- \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
- \def\overleftrightarrow{\mathpalette\overleftrightarrow@}
- \def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr\leftrightarrowfill@#1\crcr
- \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}
- \def\underrightarrow{\mathpalette\underrightarrow@}
- \def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
- \noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}}
- \let\underarrow\underrightarrow
- \def\underleftarrow{\mathpalette\underleftarrow@}
- \def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
- \noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}}
- \def\underleftrightarrow{\mathpalette\underleftrightarrow@}
- \def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil$\crcr
- \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}}
- \message{various kinds of dots,}
- \let\DOTSI\relax
- \let\DOTSB\relax
- \let\DOTSX\relax
- \newif\ifmath@
- {\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
- \uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2%
- \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}}
- \newif\ifmathch@
- {\uccode`7=`c \uccode`8=`h \uccode`9=`\"
- \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false
- \ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}}
- \newcount\classnum@
- \def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
- \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
- \gdef\thedots@{\dotsb@}\fi}
- \newif\ifmathbin@
- {\uccode`4=`b \uccode`5=`i \uccode`6=`n
- \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@
- \DNii@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}%
- \global\mathbin@false\DN@##1\mathbin@{}%
- \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
- \newif\ifmathrel@
- {\uccode`4=`r \uccode`5=`e \uccode`6=`l
- \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@
- \DNii@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}%
- \global\mathrel@false\DN@##1\mathrel@{}%
- \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
- \newif\ifmacro@
- {\uccode`5=`m \uccode`6=`a \uccode`7=`c
- \uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false
- \ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true
- \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
- \def\macro@@#1->#2\macro@@{#2}
- \newif\ifDOTS@
- \newcount\DOTSCASE@
- {\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
- \uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\DN@##1\DOTS@{}%
- \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@\fi\fi\fi\fi\fi
- \next@}}}
- {\uccode`3=`B \uccode`4=`I \uccode`5=`X
- \uppercase{\gdef\DOTS@@#1{\relaxnext@
- \DNii@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}%
- \DN@{\FN@\nextii@}%
- \ifx 3#1\global\DOTSCASE@\z@\else
- \ifx 4#1\global\DOTSCASE@\@ne\else
- \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
- \fi\fi\fi\next@}}}
- \newif\ifnot@
- {\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
- \uppercase{\gdef\not@#1#2#3#4{\relaxnext@
- \DNii@##1\not@{\ifx\space@\next\global\not@true\fi}%
- \global\not@false\DN@##1\not@{}%
- \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
- \fi\next@}}}
- \newif\ifkeybin@
- \def\keybin@{\keybin@true
- \ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else
- \ifx\next*\else\ifx\next:\else\keybin@false\fi\fi\fi\fi\fi\fi\fi}
- \def\dots{\RIfM@\expandafter\mdots@\else\expandafter\tdots@\fi}
- \def\tdots@{\unskip\relaxnext@
- \DN@{$\m@th\mathinner{\ldotp\ldotp\ldotp}\,
- \ifx\next,\,$\else\ifx\next.\,$\else\ifx\next;\,$\else\ifx\next:\,$\else
- \ifx\next?\,$\else\ifx\next!\,$\else$ \fi\fi\fi\fi\fi\fi}%
- \ \FN@\next@}
- \def\mdots@{\FN@\mdots@@}
- \def\mdots@@{\gdef\thedots@{\dotso@}% %1
- \ifx\next\boldkey\gdef\thedots@\boldkey{\boldkeydots@}\else %2
- \ifx\next\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}\else %3
- \ifx,\next\gdef\thedots@{\dotsc}% %4
- \else\ifx\not\next\gdef\thedots@{\dotsb@}% %5
- \else\keybin@
- \ifkeybin@\gdef\thedots@{\dotsb@}% %6
- \else\xdef\meaning@{\meaning\next..........}\xdef\meaning@@{\meaning@}% %7
- \expandafter\math@\meaning@\math@
- \ifmath@
- \expandafter\mathch@\meaning@\mathch@
- \ifmathch@\expandafter\getmathch@\meaning@\getmathch@\fi %8
- \else\expandafter\macro@\meaning@@\macro@ %9
- \ifmacro@ %10
- \expandafter\not@\meaning@\not@\ifnot@\gdef\thedots@{\dotsb@}% %11
- \else\expandafter\DOTS@\meaning@\DOTS@
- \ifDOTS@
- \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
- \or\gdef\thedots@{\dotsi}\else\fi %12
- \else\expandafter\math@\meaning@\math@ %13
- \ifmath@\expandafter\mathbin@\meaning@\mathbin@
- \ifmathbin@\gdef\thedots@{\dotsb@}% %14
- \else\expandafter\mathrel@\meaning@\mathrel@
- \ifmathrel@\gdef\thedots@{\dotsb@}% %15
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \thedots@}
- \def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}}
- \def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}
- \def\dotsi{\!\plaincdots@}
- \let\dotsb@\plaincdots@
- \newif\ifextra@
- \newif\ifrightdelim@
- \def\rightdelim@{\global\rightdelim@true %1
- \ifx\next)\else %2
- \ifx\next]\else
- \ifx\next\rbrack\else
- \ifx\next\}\else
- \ifx\next\rbrace\else
- \ifx\next\rangle\else
- \ifx\next\rceil\else
- \ifx\next\rfloor\else
- \ifx\next\rgroup\else
- \ifx\next\rmoustache\else
- \ifx\next\right\else
- \ifx\next\bigr\else
- \ifx\next\biggr\else
- \ifx\next\Bigr\else %3
- \ifx\next\Biggr\else\global\rightdelim@false
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
- \def\extra@{%
- \global\extra@false\rightdelim@\ifrightdelim@\global\extra@true %1
- \else\ifx\next$\global\extra@true %2
- \else\xdef\meaning@{\meaning\next..........}% %3
- \expandafter\macro@\meaning@\macro@\ifmacro@ %4
- \expandafter\DOTS@\meaning@\DOTS@
- \ifDOTS@
- \ifnum\DOTSCASE@=\tw@\global\extra@true %5
- \fi\fi\fi\fi\fi}
- \newif\ifbold@
- \def\dotso@{\relaxnext@
- \ifbold@
- \let\next\delayed@
- \DNii@{\extra@\plainldots@\ifextra@\,\fi}%
- \else
- \DNii@{\DN@{\extra@\plainldots@\ifextra@\,\fi}\FN@\next@}%
- \fi
- \nextii@}
- \def\extrap@#1{%
- \ifx\next,\DN@{#1\,}\else
- \ifx\next;\DN@{#1\,}\else
- \ifx\next.\DN@{#1\,}\else\extra@
- \ifextra@\DN@{#1\,}\else
- \let\next@#1\fi\fi\fi\fi\next@}
- \def\ldots{\DN@{\extrap@\plainldots@}%
- \FN@\next@}
- \def\cdots{\DN@{\extrap@\plaincdots@}%
- \FN@\next@}
- \let\dotso\ldots
- \let\dotsb\cdots
- \let\dotsm\dotsb
- \def\dotsc{\relaxnext@
- \DN@{\ifx\next;\plainldots@\,\else
- \ifx\next.\plainldots@\,\else\extra@\plainldots@
- \ifextra@\,\fi\fi\fi}%
- \FN@\next@}
- \def\cdot{\mathchar"2201 }
- \def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow}
- \def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow}
- \def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar}
- \def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar}
- \def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow}
- \def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow}
- \def\mapsto{\DOTSB\mapstochar\rightarrow}
- \def\longmapsto{\DOTSB\mapstochar\longrightarrow}
- \def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow}
- \def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook}
- \def\doteq{\DOTSB\buildrel\textstyle.\over=}
- \def\iff{\DOTSB\;\Longleftrightarrow\;}
- \message{special superscripts,}
- \def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
- \hbox{\rm...}\vss}}}}
- \def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
- \hbox{\rm....}\vss}}}}
- \def\sphat{^{\mathchoice{}{}%
- {\,\,\botsmash{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}%
- {\,\botsmash{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}}
- \def\spcheck{^\vee}
- \def\sptilde{^\sim}
- \def\spacute{^{\!\botsmash{\hbox{\lower\@ne ex\hbox{\'{}}}}}}
- \def\spgrave{^{\mathchoice{}{}{}{\!}%
- \botsmash{\hbox{\lower\@ne ex\hbox{\`{}}}}}}
- \def\spdot{^{\hbox{\raise\ex@\hbox{\rm.}}}}
- \def\spddot{^{\hbox{\raise\ex@\hbox{\rm..}}}}
- \def\spdddot{^{\hbox{\raise\ex@\hbox{\rm...}}}}
- \def\spddddot{^{\hbox{\raise\ex@\hbox{\rm....}}}}
- \def\spbreve{^{\!\botsmash{\hbox{\lower4\ex@\hbox{\u{}}}}}}
- \def\spbar{^-}
- \def\spvec{^\rightarrow}
- \message{\string\text,}
- \def\textonlyfont@#1#2{\def#1{\RIfM@
- \Err@{Use \string#1\space only in text}\else#2\fi}}
- \textonlyfont@\rm\tenrm
- \textonlyfont@\it\tenit
- \textonlyfont@\sl\tensl
- \textonlyfont@\bf\tenbf
- \def\oldnos#1{\RIfM@{\mathcode`\,="013B \fam\@ne#1}\else
- \leavevmode\hbox{$\m@th\mathcode`\,="013B \fam\@ne#1$}\fi}
- \def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi}
- \def\text@@#1{\leavevmode\hbox{#1}}
- \def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}}
- \def\dag{{\mathhexbox@279}}
- \def\ddag{{\mathhexbox@27A}}
- \def\S{{\mathhexbox@278}}
- \def\P{{\mathhexbox@27B}}
- \newif\iffirstchoice@
- \firstchoice@true
- \def\text@#1{\mathchoice
- {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}%
- \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
- {\hbox{\firstchoice@false
- \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}%
- \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
- {\hbox{\firstchoice@false
- \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}%
- \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}}
- {\hbox{\firstchoice@false
- \everymath{\scriptscriptstyle}\def\textfonti
- {\the\scriptscriptfont\@ne}%
- \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}}
- \def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it}
- \def\rmfam{0}
- \def\textdef@#1#2{%
- \DN@{\csname\expandafter\eat@\string#2fam\endcsname}%
- \if S#1\edef#2{\the\scriptfont\next@\relax}%
- \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}%
- \else\edef#2{\the\textfont\next@\relax}\fi\fi}
- \scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit
- \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
- \newif\iftopfolded@
- \newif\ifbotfolded@
- \def\topfoldedtext{\topfolded@true\botfolded@false\foldedtext@}
- \def\botfoldedtext{\botfolded@true\topfolded@false\foldedtext@}
- \def\foldedtext{\topfolded@false\botfolded@false\foldedtext@}
- \Invalid@\foldedwidth
- \def\foldedtext@{\relaxnext@
- \DN@{\ifx\next\foldedwidth\let\next@\nextii@\else
- \DN@{\nextii@\foldedwidth{.3\hsize}}\fi\next@}%
- \DNii@\foldedwidth##1##2{\setbox\z@\vbox
- {\normalbaselines\hsize##1\relax
- \tolerance1600 \noindent\ignorespaces##2}\ifbotfolded@\boxz@\else
- \iftopfolded@\vtop{\unvbox\z@}\else\vcenter{\boxz@}\fi\fi}%
- \FN@\next@}
- \message{math font commands,}
- \def\bold{\RIfM@\expandafter\bold@\else
- \expandafter\nonmatherr@\expandafter\bold\fi}
- \def\bold@#1{{\bold@@{#1}}}
- \def\bold@@#1{\fam\bffam\relax#1}
- \def\slanted{\RIfM@\expandafter\slanted@\else
- \expandafter\nonmatherr@\expandafter\slanted\fi}
- \def\slanted@#1{{\slanted@@{#1}}}
- \def\slanted@@#1{\fam\slfam\relax#1}
- \def\roman{\RIfM@\expandafter\roman@\else
- \expandafter\nonmatherr@\expandafter\roman\fi}
- \def\roman@#1{{\roman@@{#1}}}
- \def\roman@@#1{\fam\rmfam\relax#1}
- \def\italic{\RIfM@\expandafter\italic@\else
- \expandafter\nonmatherr@\expandafter\italic\fi}
- \def\italic@#1{{\italic@@{#1}}}
- \def\italic@@#1{\fam\itfam\relax#1}
- \def\Cal{\RIfM@\expandafter\Cal@\else
- \expandafter\nonmatherr@\expandafter\Cal\fi}
- \def\Cal@#1{{\Cal@@{#1}}}
- \def\Cal@@#1{\noaccents@\fam\tw@#1}
- \mathchardef\Gamma="0000
- \mathchardef\Delta="0001
- \mathchardef\Theta="0002
- \mathchardef\Lambda="0003
- \mathchardef\Xi="0004
- \mathchardef\Pi="0005
- \mathchardef\Sigma="0006
- \mathchardef\Upsilon="0007
- \mathchardef\Phi="0008
- \mathchardef\Psi="0009
- \mathchardef\Omega="000A
- \mathchardef\varGamma="0100
- \mathchardef\varDelta="0101
- \mathchardef\varTheta="0102
- \mathchardef\varLambda="0103
- \mathchardef\varXi="0104
- \mathchardef\varPi="0105
- \mathchardef\varSigma="0106
- \mathchardef\varUpsilon="0107
- \mathchardef\varPhi="0108
- \mathchardef\varPsi="0109
- \mathchardef\varOmega="010A
- \let\alloc@@\alloc@
- \def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
- 9\or A\or B\or C\or D\or E\or F\fi}
- \def\loadmsam{%
- \font@\tenmsa=msam10
- \font@\sevenmsa=msam7
- \font@\fivemsa=msam5
- \alloc@@8\fam\chardef\sixt@@n\msafam
- \textfont\msafam=\tenmsa
- \scriptfont\msafam=\sevenmsa
- \scriptscriptfont\msafam=\fivemsa
- \edef\next{\hexnumber@\msafam}%
- \mathchardef\dabar@"0\next39
- \edef\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\next4B}}%
- \edef\dashleftarrow{\mathrel{\mathchar"0\next4C\dabar@\dabar@}}%
- \let\dasharrow\dashrightarrow
- \edef\ulcorner{\delimiter"4\next70\next70 }%
- \edef\urcorner{\delimiter"5\next71\next71 }%
- \edef\llcorner{\delimiter"4\next78\next78 }%
- \edef\lrcorner{\delimiter"5\next79\next79 }%
- \edef\yen{{\noexpand\mathhexbox@\next55}}%
- \edef\checkmark{{\noexpand\mathhexbox@\next58}}%
- \edef\circledR{{\noexpand\mathhexbox@\next72}}%
- \edef\maltese{{\noexpand\mathhexbox@\next7A}}%
- \global\let\loadmsam\empty}%
- \def\loadmsbm{%
- \font@\tenmsb=msbm10 \font@\sevenmsb=msbm7 \font@\fivemsb=msbm5
- \alloc@@8\fam\chardef\sixt@@n\msbfam
- \textfont\msbfam=\tenmsb
- \scriptfont\msbfam=\sevenmsb \scriptscriptfont\msbfam=\fivemsb
- \global\let\loadmsbm\empty
- }
- \def\widehat#1{\ifx\undefined\msbfam \DN@{362}%
- \else \setboxz@h{$\m@th#1$}%
- \edef\next@{\ifdim\wdz@>\tw@ em%
- \hexnumber@\msbfam 5B%
- \else 362\fi}\fi
- \mathaccent"0\next@{#1}}
- \def\widetilde#1{\ifx\undefined\msbfam \DN@{365}%
- \else \setboxz@h{$\m@th#1$}%
- \edef\next@{\ifdim\wdz@>\tw@ em%
- \hexnumber@\msbfam 5D%
- \else 365\fi}\fi
- \mathaccent"0\next@{#1}}
- \message{\string\newsymbol,}
- \def\newsymbol#1#2#3#4#5{\define#1{}%
- \count@#2\relax \advance\count@\m@ne % to push case 0 to the \else clause
- \ifcase\count@
- \ifx\undefined\msafam\loadmsam\fi \let\next@\msafam
- \or \ifx\undefined\msbfam\loadmsbm\fi \let\next@\msbfam
- \else \Err@{\Invalid@@\string\newsymbol}\let\next@\tw@\fi
- \mathchardef#1="#3\hexnumber@\next@#4#5\space}
- \def\UseAMSsymbols{\loadmsam\loadmsbm \input amssym.tex }
- \def\Bbb{\RIfM@\expandafter\Bbb@\else
- \expandafter\nonmatherr@\expandafter\Bbb\fi}
- \def\Bbb@#1{{\Bbb@@{#1}}}
- \def\Bbb@@#1{\noaccents@\fam\msbfam\relax#1}
- \message{bold Greek and bold symbols,}
- \def\loadbold{%
- \font@\tencmmib=cmmib10 \font@\sevencmmib=cmmib7 \font@\fivecmmib=cmmib5
- \skewchar\tencmmib'177 \skewchar\sevencmmib'177 \skewchar\fivecmmib'177
- \alloc@@8\fam\chardef\sixt@@n\cmmibfam
- \textfont\cmmibfam\tencmmib
- \scriptfont\cmmibfam\sevencmmib \scriptscriptfont\cmmibfam\fivecmmib
- \font@\tencmbsy=cmbsy10 \font@\sevencmbsy=cmbsy7 \font@\fivecmbsy=cmbsy5
- \skewchar\tencmbsy'60 \skewchar\sevencmbsy'60 \skewchar\fivecmbsy'60
- \alloc@@8\fam\chardef\sixt@@n\cmbsyfam
- \textfont\cmbsyfam\tencmbsy
- \scriptfont\cmbsyfam\sevencmbsy \scriptscriptfont\cmbsyfam\fivecmbsy
- \let\loadbold\empty
- }
- \def\boldnotloaded#1{\Err@{\ifcase#1\or First\else Second\fi
- bold symbol font not loaded}}
- \def\mathchari@#1#2#3{\ifx\undefined\cmmibfam
- \boldnotloaded@\@ne
- \else\mathchar"#1\hexnumber@\cmmibfam#2#3\space \fi}
- \def\mathcharii@#1#2#3{\ifx\undefined\cmbsyfam
- \boldnotloaded\tw@
- \else \mathchar"#1\hexnumber@\cmbsyfam#2#3\space\fi}
- \edef\bffam@{\hexnumber@\bffam}
- \def\boldkey#1{\ifcat\noexpand#1A%
- \ifx\undefined\cmmibfam \boldnotloaded\@ne
- \else {\fam\cmmibfam#1}\fi
- \else
- \ifx#1!\mathchar"5\bffam@21 \else
- \ifx#1(\mathchar"4\bffam@28 \else\ifx#1)\mathchar"5\bffam@29 \else
- \ifx#1+\mathchar"2\bffam@2B \else\ifx#1:\mathchar"3\bffam@3A \else
- \ifx#1;\mathchar"6\bffam@3B \else\ifx#1=\mathchar"3\bffam@3D \else
- \ifx#1?\mathchar"5\bffam@3F \else\ifx#1[\mathchar"4\bffam@5B \else
- \ifx#1]\mathchar"5\bffam@5D \else
- \ifx#1,\mathchari@63B \else
- \ifx#1-\mathcharii@200 \else
- \ifx#1.\mathchari@03A \else
- \ifx#1/\mathchari@03D \else
- \ifx#1<\mathchari@33C \else
- \ifx#1>\mathchari@33E \else
- \ifx#1*\mathcharii@203 \else
- \ifx#1|\mathcharii@06A \else
- \ifx#10\bold0\else\ifx#11\bold1\else\ifx#12\bold2\else\ifx#13\bold3\else
- \ifx#14\bold4\else\ifx#15\bold5\else\ifx#16\bold6\else\ifx#17\bold7\else
- \ifx#18\bold8\else\ifx#19\bold9\else
- \Err@{\string\boldkey\space can't be used with #1}%
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
- \def\boldsymbol#1{%
- \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}%
- \ifcat\noexpand#1A%
- \let\next@\relax
- \ifx\undefined\cmmibfam \boldnotloaded\@ne
- \else {\fam\cmmibfam#1}\fi
- \else
- \xdef\meaning@{\meaning#1.........}%
- \expandafter\math@\meaning@\math@
- \ifmath@
- \expandafter\mathch@\meaning@\mathch@
- \ifmathch@
- \expandafter\boldsymbol@@\meaning@\boldsymbol@@
- \fi
- \else
- \expandafter\macro@\meaning@\macro@
- \expandafter\delim@\meaning@\delim@
- \ifdelim@
- \expandafter\delim@@\meaning@\delim@@
- \else
- \boldsymbol@{#1}%
- \fi
- \fi
- \fi
- \next@}
- \def\mathhexboxii@#1#2{\ifx\undefined\cmbsyfam
- \boldnotloaded\tw@
- \else \mathhexbox@{\hexnumber@\cmbsyfam}{#1}{#2}\fi}
- \def\boldsymbol@#1{\let\next@\relax\let\next#1%
- \ifx\next\cdot\mathcharii@201 \else
- \ifx\next\prime{{\null\mathcharii@030 \null}}\else
- \ifx\next\lbrack\mathchar"4\bffam@5B \else
- \ifx\next\rbrack\mathchar"5\bffam@5D \else
- \ifx\next\{\mathcharii@466 \else
- \ifx\next\lbrace\mathcharii@466 \else
- \ifx\next\}\mathcharii@567 \else
- \ifx\next\rbrace\mathcharii@567 \else
- \ifx\next\surd{{\mathcharii@170}}\else
- \ifx\next\S{{\mathhexboxii@78}}\else
- \ifx\next\P{{\mathhexboxii@7B}}\else
- \ifx\next\dag{{\mathhexboxii@79}}\else
- \ifx\next\ddag{{\mathhexboxii@7A}}\else
- \DN@{\Err@{You can't use \string\boldsymbol\space with \string#1}#1}%
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
- \def\boldsymbol@@#1.#2\boldsymbol@@{\classnum@#1 \count@@@\classnum@ %1
- \divide\classnum@4096 \count@\classnum@ %2
- \multiply\count@4096 \advance\count@@@-\count@ \count@@\count@@@ %3
- \divide\count@@@\@cclvi \count@\count@@ %4
- \multiply\count@@@\@cclvi \advance\count@@-\count@@@ %5
- \divide\count@@@\@cclvi %6
- \multiply\classnum@4096 \advance\classnum@\count@@ %7
- \ifnum\count@@@=\z@ %8
- \count@"\bffam@ \multiply\count@\@cclvi
- \advance\classnum@\count@
- \DN@{\mathchar\number\classnum@}%
- \else
- \ifnum\count@@@=\@ne %9
- \ifx\undefined\cmmibfam \DN@{\boldnotloaded\@ne}%
- \else \count@\cmmibfam \multiply\count@\@cclvi
- \advance\classnum@\count@
- \DN@{\mathchar\number\classnum@}\fi
- \else
- \ifnum\count@@@=\tw@ %10
- \ifx\undefined\cmbsyfam
- \DN@{\boldnotloaded\tw@}%
- \else
- \count@\cmbsyfam \multiply\count@\@cclvi
- \advance\classnum@\count@
- \DN@{\mathchar\number\classnum@}%
- \fi
- \fi
- \fi
- \fi}
- \newif\ifdelim@
- \newcount\delimcount@
- {\uccode`6=`\\ \uccode`7=`d \uccode`8=`e \uccode`9=`l
- \uppercase{\gdef\delim@#1#2#3#4#5\delim@
- {\delim@false\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\delim@true
- \xdef\meaning@{#5}\fi\fi\fi\fi}}}
- \def\delim@@#1"#2#3#4#5#6\delim@@{\if#32%
- \let\next@\relax
- \ifx\undefined\cmbsyfam \boldnotloaded\@ne
- \else \mathcharii@#2#4#5\space \fi\fi}
- \def\vert{\delimiter"026A30C }
- \def\Vert{\delimiter"026B30D }
- \let\|\Vert
- \def\backslash{\delimiter"026E30F }
- \def\boldkeydots@#1{\bold@true\let\next=#1\let\delayed@=#1\mdots@@
- \boldkey#1\bold@false} % = required!
- \def\boldsymboldots@#1{\bold@true\let\next#1\let\delayed@#1\mdots@@
- \boldsymbol#1\bold@false}
- \message{Euler fonts,}
- \def\loadeufm{\loadmathfont{eufm}}
- \def\loadeufb{\loadmathfont{eufb}}
- \def\loadeusm{\loadmathfont{eusm}}
- \def\loadeusb{\loadmathfont{eusb}}
- \def\loadeurm{\loadmathfont{eurm}}
- \def\loadeurb{\loadmathfont{eurb}}
- \def\frak{\mathfont@\frak}
- \def\frakfam{\eufmfam}
- \let\goth\frak
- \def\loadmathfont#1{%
- \expandafter\font@\csname ten#1\endcsname=#110
- \expandafter\font@\csname seven#1\endcsname=#17
- \expandafter\font@\csname five#1\endcsname=#15
- \edef\next{\noexpand\alloc@@8\fam\chardef\sixt@@n
- \expandafter\noexpand\csname#1fam\endcsname}%
- \next
- \textfont\csname#1fam\endcsname \csname ten#1\endcsname
- \scriptfont\csname#1fam\endcsname \csname seven#1\endcsname
- \scriptscriptfont\csname#1fam\endcsname \csname five#1\endcsname
- \expandafter\def\csname #1\expandafter\endcsname\expandafter{%
- \expandafter\mathfont@\csname#1\endcsname}%
- \expandafter\gdef\csname load#1\endcsname{}%
- }
- \def\mathfont@#1{\RIfM@\expandafter\mathfont@@\expandafter#1\else
- \expandafter\nonmatherr@\expandafter#1\fi}
- \def\mathfont@@#1#2{{\mathfont@@@#1{#2}}}
- \def\mathfont@@@#1#2{\noaccents@
- \fam\csname\expandafter\eat@\string#1fam\endcsname
- \relax#2}
- \message{math accents,}
- \def\accentclass@{7}
- \def\noaccents@{\def\accentclass@{0}}
- \def\makeacc@#1#2{\def#1{\mathaccent"\accentclass@#2 }}
- \makeacc@\hat{05E}
- \makeacc@\check{014}
- \makeacc@\tilde{07E}
- \makeacc@\acute{013}
- \makeacc@\grave{012}
- \makeacc@\dot{05F}
- \makeacc@\ddot{07F}
- \makeacc@\breve{015}
- \makeacc@\bar{016}
- \def\vec{\mathaccent"017E }
- \newcount\skewcharcount@
- \newcount\familycount@
- \def\theskewchar@{\familycount@\@ne
- \global\skewcharcount@\the\skewchar\textfont\@ne %1
- \ifnum\fam>\m@ne\ifnum\fam<16
- \global\familycount@\the\fam\relax
- \global\skewcharcount@\the\skewchar\textfont\the\fam\relax\fi\fi %2
- \ifnum\skewcharcount@>\m@ne
- \ifnum\skewcharcount@<128
- \multiply\familycount@256
- \global\advance\skewcharcount@\familycount@
- \global\advance\skewcharcount@28672
- \mathchar\skewcharcount@\else
- \global\skewcharcount@\m@ne\fi\else
- \global\skewcharcount@\m@ne\fi} %3
- \newcount\pointcount@
- \def\getpoints@#1.#2\getpoints@{\pointcount@#1 }
- \newdimen\accentdimen@
- \newcount\accentmu@
- \def\dimentomu@{\multiply\accentdimen@ 100
- \expandafter\getpoints@\the\accentdimen@\getpoints@
- \multiply\pointcount@18
- \divide\pointcount@\@m
- \global\accentmu@\pointcount@}
- \def\Makeacc@#1#2{\def#1{\RIfM@\DN@{\mathaccent@
- {"\accentclass@#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}}
- \def\unbracefonts@{\let\Cal@\Cal@@\let\roman@\roman@@\let\bold@\bold@@
- \let\slanted@\slanted@@}
- \def\mathaccent@#1#2{\ifnum\fam=\m@ne\xdef\thefam@{1}\else
- \xdef\thefam@{\the\fam}\fi %1
- \accentdimen@\z@ %2
- \setboxz@h{\unbracefonts@$\m@th\fam\thefam@\relax#2$}% %3
- \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}% %4
- \setbox@ne\hbox{\unbracefonts@$\m@th\fam\thefam@\relax#2\theskewchar@$}% %5a
- \setbox\tw@\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else
- \mathchar\skewcharcount@\fi$}% %5b
- \global\accentdimen@\wd@ne\global\advance\accentdimen@-\wdz@
- \global\advance\accentdimen@-\wd\tw@ %5c
- \global\multiply\accentdimen@\tw@
- \dimentomu@\global\advance\accentmu@\@ne %5d
- \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}%
- \mkern-\accentmu@ mu}{}}\fi %6
- \next@}\Makeacc@\Hat{05E}
- \Makeacc@\Check{014}
- \Makeacc@\Tilde{07E}
- \Makeacc@\Acute{013}
- \Makeacc@\Grave{012}
- \Makeacc@\Dot{05F}
- \Makeacc@\Ddot{07F}
- \Makeacc@\Breve{015}
- \Makeacc@\Bar{016}
- \def\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else
- \DN@{\nonmatherr@\Vec}\fi\next@}
- \def\accentedsymbol#1#2{\csname newbox\expandafter\endcsname
- \csname\expandafter\eat@\string#1@box\endcsname
- \expandafter\setbox\csname\expandafter\eat@
- \string#1@box\endcsname\hbox{$\m@th#2$}\define
- #1{\copy\csname\expandafter\eat@\string#1@box\endcsname{}}}
- \message{roots,}
- \def\sqrt#1{\radical"270370 {#1}}
- \let\underline@\underline
- \let\overline@\overline
- \def\underline#1{\underline@{#1}}
- \def\overline#1{\overline@{#1}}
- \Invalid@\leftroot
- \Invalid@\uproot
- \newcount\uproot@
- \newcount\leftroot@
- \def\root{\relaxnext@
- \DN@{\ifx\next\uproot\let\next@\nextii@\else
- \ifx\next\leftroot\let\next@\nextiii@\else
- \let\next@\plainroot@\fi\fi\next@}%
- \DNii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
- \def\nextiv@{\ifx\next\space@\DN@. {\FN@\nextv@}\else
- \DN@.{\FN@\nextv@}\fi\next@.}%
- \def\nextv@{\ifx\next\leftroot\let\next@\nextvi@\else
- \let\next@\plainroot@\fi\next@}%
- \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
- \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
- \def\nextvii@{\ifx\next\space@
- \DN@. {\FN@\nextviii@}\else
- \DN@.{\FN@\nextviii@}\fi\next@.}%
- \def\nextviii@{\ifx\next\uproot\let\next@\nextix@\else
- \let\next@\plainroot@\fi\next@}%
- \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
- \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
- \def\plainroot@#1\of#2{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
- \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
- {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
- \def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrt{#2}$}%
- \dimen@\ht\z@\advance\dimen@-\dp\z@
- \setbox@ne\hbox{$\m@th#1\mskip\uproot@ mu$}\advance\dimen@ 1.667\wd@ne
- \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
- \mkern-10mu\mkern\leftroot@ mu\boxz@}
- \def\boxed#1{\setboxz@h{$\m@th\displaystyle{#1}$}\dimen@.4\ex@
- \advance\dimen@3\ex@\advance\dimen@\dp\z@
- \hbox{\lower\dimen@\hbox{%
- \vbox{\hrule height.4\ex@
- \hbox{\vrule width.4\ex@\hskip3\ex@\vbox{\vskip3\ex@\boxz@\vskip3\ex@}%
- \hskip3\ex@\vrule width.4\ex@}\hrule height.4\ex@}%
- }}}
- \message{commutative diagrams,}
- \let\ampersand@\relax
- \newdimen\minaw@
- \minaw@11.11128\ex@
- \newdimen\minCDaw@
- \minCDaw@2.5pc
- \def\minCDarrowwidth#1{\RIfMIfI@\onlydmatherr@\minCDarrowwidth
- \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
- \newif\ifCD@
- \def\CD{\bgroup\vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
- \CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@
- \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
- &\hfill$\m@th##$\hfill\crcr}
- \def\endCD{\crcr\egroup\egroup\egroup}
- \newdimen\bigaw@
- \atdef@>#1>#2>{\ampersand@ %1
- \setboxz@h{$\m@th\ssize\;{#1}\;\;$}% %2
- \setbox@ne\hbox{$\m@th\ssize\;{#2}\;\;$}% %3
- \setbox\tw@\hbox{$\m@th#2$}% %4
- \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi %5
- \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
- \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi %6
- \ifCD@\enskip\fi %7
- \ifdim\wd\tw@>\z@
- \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}%
- \limits^{#1}_{#2}}% %8
- \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}%
- \limits^{#1}}\fi %9
- \ifCD@\enskip\fi %10
- \ampersand@} %11
- \atdef@<#1<#2<{\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
- \setbox@ne\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox\tw@\hbox{$\m@th#2$}%
- \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
- \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
- \ifdim\wd@ne>\bigaw@\global\bigaw@\wd@ne\fi
- \ifCD@\enskip\fi
- \ifdim\wd\tw@>\z@
- \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}%
- \limits^{#1}_{#2}}\else
- \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}%
- \limits^{#1}}\fi
- \ifCD@\enskip\fi\ampersand@}
- \begingroup
- \catcode`\~=\active \lccode`\~=`\@
- \lowercase{%
- \global\atdef@)#1)#2){~>#1>#2>}
- \global\atdef@(#1(#2({~<#1<#2<}}
- \endgroup
- \atdef@ A#1A#2A{\llap{$\m@th\vcenter{\hbox
- {$\ssize#1$}}$}\Big\uparrow\rlap{$\m@th\vcenter{\hbox{$\ssize#2$}}$}&&}
- \atdef@ V#1V#2V{\llap{$\m@th\vcenter{\hbox
- {$\ssize#1$}}$}\Big\downarrow\rlap{$\m@th\vcenter{\hbox{$\ssize#2$}}$}&&}
- \atdef@={&\enskip\mathrel
- {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
- \minCDaw@}}\enskip&}
- \atdef@|{\Big\Vert&&}
- \atdef@\vert{\Big\Vert&&}
- \def\pretend#1\haswidth#2{\setboxz@h{$\m@th\scriptstyle{#2}$}\hbox
- to\wdz@{\hfill$\m@th\scriptstyle{#1}$\hfill}}
- \message{poor man's bold,}
- \def\pmb{\RIfM@\expandafter\mathpalette\expandafter\pmb@\else
- \expandafter\pmb@@\fi}
- \def\pmb@@#1{\leavevmode\setboxz@h{#1}%
- \dimen@-\wdz@
- \kern-.5\ex@\copy\z@
- \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@
- \kern\dimen@\kern.25\ex@\box\z@
- }
- \def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
- \mathrel{#1}\else{#1}\fi\fi}
- \newdimen\pmbraise@
- % Note: because of the use of \mathpalette, if \pmb@ is
- % applied to a single math italic character (or a single
- % character from some other slanted math font), the italic
- % correction will be added. This will cause subscripts
- % to fall too far away from the character in some
- % cases, e.g., $\pmb{T}_1$ or $\pmb{\Cal T}_1$.
- \def\pmb@#1#2{\setbox\thr@@\hbox{$\m@th#1{#2}$}%
- \setbox4\hbox{$\m@th#1\mkern.5mu$}\pmbraise@\wd4\relax
- \binrel@{#2}%
- \dimen@-\wd\thr@@
- \binrel@@{%
- \mkern-.8mu\copy\thr@@
- \kern\dimen@\mkern.4mu\raise\pmbraise@\copy\thr@@
- \kern\dimen@\mkern.4mu\box\thr@@
- }}
- \def\documentstyle#1{\W@{}\input #1.sty\relax}
- \message{syntax check,}
- \font\dummyft@=dummy
- \fontdimen1 \dummyft@=\z@
- \fontdimen2 \dummyft@=\z@
- \fontdimen3 \dummyft@=\z@
- \fontdimen4 \dummyft@=\z@
- \fontdimen5 \dummyft@=\z@
- \fontdimen6 \dummyft@=\z@
- \fontdimen7 \dummyft@=\z@
- \fontdimen8 \dummyft@=\z@
- \fontdimen9 \dummyft@=\z@
- \fontdimen10 \dummyft@=\z@
- \fontdimen11 \dummyft@=\z@
- \fontdimen12 \dummyft@=\z@
- \fontdimen13 \dummyft@=\z@
- \fontdimen14 \dummyft@=\z@
- \fontdimen15 \dummyft@=\z@
- \fontdimen16 \dummyft@=\z@
- \fontdimen17 \dummyft@=\z@
- \fontdimen18 \dummyft@=\z@
- \fontdimen19 \dummyft@=\z@
- \fontdimen20 \dummyft@=\z@
- \fontdimen21 \dummyft@=\z@
- \fontdimen22 \dummyft@=\z@
- \def\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}%
- \\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}%
- \\{\fivebf}\\{\tensl}\\{\tenit}}
- \def\font@#1=#2 {\rightappend@#1\to\fontlist@\font#1=#2 }
- \def\dodummy@{{\def\\##1{\global\let##1\dummyft@}\fontlist@}}
- \def\nopages@{\output{\setbox\z@\box\@cclv \deadcycles\z@}%
- \alloc@5\toks\toksdef\@cclvi\output}
- \let\galleys\nopages@
- \newif\ifsyntax@
- \newcount\countxviii@
- \def\syntax{\syntax@true\dodummy@\countxviii@\count18
- \loop\ifnum\countxviii@>\m@ne\textfont\countxviii@=\dummyft@
- \scriptfont\countxviii@=\dummyft@\scriptscriptfont\countxviii@=\dummyft@
- \advance\countxviii@\m@ne\repeat %1
- \dummyft@\tracinglostchars\z@\nopages@\frenchspacing\hbadness\@M}
- \def\first@#1#2\end{#1}
- \def\printoptions{\W@{Do you want S(yntax check),
- G(alleys) or P(ages)?}%
- \message{Type S, G or P, followed by <return>: }%
- \begingroup % to localize the following change to \endlinechar:
- \endlinechar\m@ne % to prevent a space or \par in \ans@ from ^^M
- \read\m@ne to\ans@
- % Define \ans@ to uppercase itself, and default to P if the user
- % just pressed <return>.
- \edef\ans@{\uppercase{\def\noexpand\ans@{%
- \expandafter\first@\ans@ P\end}}}%
- % Cast the new definition of \ans@ outside the group
- \expandafter\endgroup\ans@
- \if\ans@ P% fine, no action needs to be taken
- \else \if\ans@ S\syntax
- \else \if\ans@ G\galleys
- \else\message{? Unknown option: \ans@; using the `pages' option.}%
- \fi\fi\fi}
- \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
- \ch@ck#1#4#2\allocationnumber=\count1#1
- \global#3#5=\allocationnumber
- \ifalloc@\wlog{\string#5=\string#2\the\allocationnumber}\fi}
- \def\document{\def\alloclist@{}\def\fontlist@{}}
- \let\enddocument\bye
- \let\plainproclaim\proclaim
- \let\plainfootnote\footnote
- \let\proclaim\undefined
- \let\footnote\undefined
- \let\=\undefined
- \let\>\undefined
- \let\cal\undefined
- \let\mit\undefined
- \let\oldstyle\undefined
- \catcode`\@=\active
- \message{... finished}
- \endinput
-